<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		<div class="box" id="div_box">
			<button onclick="fn1()">test</button>
		</div>
		<script>
			// 简单的闭包
			// function init() {
			// 	let num = 100
			// 	return function() {
			// 		return num
			// 	}
			// }
			// let test = init()
			// console.log(test())
			//节流函数-闭包
			// 功能:多次点击按钮无效,只执行一次
			function throttle(fn, delay) {
				var flag = false;
				var timer = null;
				return function() {
					var args = [].slice.call(arguments, 0); //将参数转成数组
					var context = this;
					if (flag) { //如果在限定的时间内 flag是true 则直接返回，不让执行
						return;
					}
					flag = true; //函数正在控制中
					//执行函数
					fn.apply(context, args);
					// fn();
					clearTimeout(timer); //清除定时器
					timer = setTimeout(function() {
						flag = false; //延时时间过了以后，放开函数控制
					}, delay)

				}
			}

			function fn() {
				console.log(123);
			}

			var fn1 = throttle(fn, 2000); //绑定节流函数
			
			
			// (function(){
			// 	console.log(22)
			// })()
			
			
		</script>
	</body>
</html>
